package com.UKIT.airtickets.Service

import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkStatic
import org.junit.Test

import org.junit.Assert.*
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import java.util.regex.Pattern.matches

class ValidationUtilsTest {

    @Test
    fun testValidEmail() {
        val email = "example@example.com"
        assertTrue(ValidationUtils.checkIsEmail(email))
    }

    @Test
    fun testInvalidEmailFormat() {
        assertFalse(ValidationUtils.checkIsEmail("example.com")) // Невалидный email без символа "@"
    }

    @Test
    fun testEmptyEmail() {
        assertFalse(ValidationUtils.checkIsEmail("")) // Пустая строка
    }

    @Test
    fun testMissingDomain() {
        assertFalse(ValidationUtils.checkIsEmail("example@")) // Невалидный email без домена
    }

    @Test
    fun testInvalidUsername() {
        assertFalse(ValidationUtils.checkIsEmail("example")) // Невалидный email без домена и символа "@"
    }

    @Test
    fun testValidPassword() {
        assertTrue(ValidationUtils.checkPasswordTrue("Password1@")) // Валидный пароль
    }

    @Test
    fun testPasswordNoLetters() {
        assertFalse(ValidationUtils.checkPasswordTrue("123456")) // Пароль без буквы
    }

    @Test
    fun testPasswordNoSpecialChar() {
        assertFalse(ValidationUtils.checkPasswordTrue("Password")) // Пароль без специального символа
    }

    @Test
    fun testPasswordNoDigits() {
        assertFalse(ValidationUtils.checkPasswordTrue("Password")) // Пароль без цифры
    }

    @Test
    fun testShortPassword() {
        assertFalse(ValidationUtils.checkPasswordTrue("Pass")) // Короткий пароль
    }

    @Test
    fun testValidUsername() {
        assertTrue(ValidationUtils.checkUserName("username123")) // Корректное имя пользователя
    }

    @Test
    fun testShortUsername() {
        assertFalse(ValidationUtils.checkUserName("user")) // Короткое имя пользователя
    }

    @Test
    fun testUsernameWithSpaces() {
        assertTrue(ValidationUtils.checkUserName("user name")) // Имя пользователя с пробелами (если допустимо)
    }

    @Test
    fun testEmptyUsername() {
        assertFalse(ValidationUtils.checkUserName("")) // Пустое имя пользователя
    }

    @Test
    fun testUsernameWithSpecialChars() {
        assertTrue(ValidationUtils.checkUserName("user@name")) // Имя пользователя с разными символами
    }
}
